package main

import "fmt"

type staff struct {
	name     string
	age      int
	position string
}

func main() {
	//第一种，最常用的,注意它返回的是结构体对象
	xm := staff{
		name:     "小明",
		age:      18,
		position: "产品",
	}
	fmt.Printf("类型是：%T \n", xm)

	//第二种,使用new。注意xz保存的是指针
	xz := new(staff) //等价于 var xm *staff = new(Profile)  *staff是它的数据类型，即一个结构体的指针
	fmt.Printf("类型是：%T \n", xz)

	xz.age = 55 //或者 (*xz).age=55

	//第三种，使用&。 注意xl保存的是指针。
	var xl *staff = &staff{age: 22}
	xl.name = "小刘"

	//和上面类似，只不过使用更简洁的“推导”
	xc := &staff{age: 33, name: "小陈"}
	fmt.Println(xm, xz, xl, xc)
}
